/*
 * renderer.h
 *
 *  Created on: 12/05/2013
 *      Author: alex
 */

#ifndef RENDERER_H_
#define RENDERER_H_

#include <stdlib.h>
#include <stdio.h>
#include <GL/glew.h>
#include <GL/glut.h>

typedef struct
{
	long double x;
	long double y;
	long double z;
} punto_t;

typedef struct
{
	punto_t u;
	punto_t v;
	punto_t n;
} vector_vrc_t;

typedef struct
{
  long double r;
  long double g;
  long double b;
} color_t;

// Tipos de Proyecciones
typedef enum
{
	proyeccion_paralela,
	proyeccion_perspectiva
} tipo_proyeccion_t;

// Tipos de Iluminacion
typedef enum
{
	iluminacion_wireframe,
	iluminacion_flat,
	iluminacion_gouraud,
	iluminacion_phong
} tipo_iluminacion_t;

// Ejes de rotación
typedef enum
{
	eje_u,
	eje_v,
	eje_n
} eje_t;

// Camara
typedef struct
{
	punto_t VRP;
	punto_t VPN;
	punto_t VUP;
	long double offset;
	long double u_min, v_min, u_max, v_max;
	long double F, B;
	punto_t PRP;
	vector_vrc_t VRC;
	punto_t CoW;
	punto_t DoP;
} camara_t;

// Luz
typedef struct
{
	long double intensidad;
	long double x, y, z;
} luz_t;

#endif /* RENDERER_H_ */
